package com.lanou.utils;

import org.apache.commons.dbcp2.BasicDataSource;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * 确保连接池唯一
 */
public class DBCPUtil {

    private static BasicDataSource dataSource
            = new BasicDataSource();

    static {
        // 静态代码块只会在类第一次被加载的时候运行一次
        // 适合来初始化这个类的静态属性

        dataSource.setUrl("jdbc:mysql://localhost:3306/bookstore?useSSL=true");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");

        // 设置连接池属性
        // 最大的连接数量
        dataSource.setMaxTotal(80);

        // 连接池初始化的时候默认创建几个连接
        dataSource.setInitialSize(20);

        // 连接池中能容许保持的空闲连接的最小数量
        // 如果小于这个数量, 系统会自动创建新的连接补足.
        dataSource.setMinIdle(20);

        // 设置最大空闲连接
        // 如果空闲连接超过这个数量, 多余的空闲连接会被释放
        dataSource.setMaxIdle(40);

        // 连接的超时时间
        dataSource.setMaxWaitMillis(6000);

        dataSource.setRemoveAbandonedTimeout(10000);

//        dataSource.setInitialSize(20);
//        dataSource.setMaxTotal(80);
//        dataSource.setMaxIdle(40);
//        dataSource.setMinIdle(20);
//        dataSource.setMaxWaitMillis(6000);
    }


    public static Connection getConnection() {

        Connection conn = null;
        try {
            conn = dataSource.getConnection();
            conn.setAutoCommit(false);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return conn;
    }
}
